
#include<bits/stdc++.h>

using namespace std;


/**
 *用于计算波兰表达式的值(前缀式转后缀式）
 *
 * 该函数从标准输入读取逆波兰表达式的元素，将其存储在向量中，
 * 反转向量顺序后，使用栈来计算表达式的值，并输出结果，保留两位小数。
 *
 * @return 程序正常结束返回 0
 */
int main() {
    // 定义一个字符串向量，用于存储输入的逆波兰表达式的每个元素
    vector<string> expr;
    // 定义一个字符串变量，用于临时存储从标准输入读取的每个元素
    string w;
    // 从标准输入循环读取元素，直到输入结束
    while (cin >> w) {
        // 将读取的元素添加到向量中
        expr.push_back(w);
    }
    // 反转向量中元素的顺序
    reverse(expr.begin(), expr.end());
    // 定义一个双精度浮点数栈，用于计算逆波兰表达式的值
    stack<double> s;
    // 遍历反转后的向量中的每个元素
    for (auto &w: expr) {
        // 定义一个双精度浮点数变量，用于存储转换后的数字
        double x;
        // 创建一个字符串输入流对象，用于将字符串转换为数字
        istringstream iss(w);
        // 尝试将字符串转换为双精度浮点数
        if ( iss >> x ) {
            // 如果转换成功，将数字压入栈中
            s.push(x);
        // 如果当前元素是加号
        } else if ( w == "+" ) {
            // 取出栈顶元素作为第一个操作数
            double a = s.top();
            // 弹出栈顶元素
            s.pop();
            // 取出新的栈顶元素作为第二个操作数
            double b = s.top();
            // 弹出栈顶元素
            s.pop();
            // 将两个操作数相加，并将结果压入栈中
            s.push(a + b);
        // 如果当前元素是减号
        } else if ( w == "-" ) {
            // 取出栈顶元素作为第一个操作数
            double a = s.top();
            // 弹出栈顶元素
            s.pop();
            // 取出新的栈顶元素作为第二个操作数
            double b = s.top();
            // 弹出栈顶元素
            s.pop();
            // 将两个操作数相减，并将结果压入栈中
            s.push(a - b);
        // 如果当前元素是乘号
        } else if ( w == "*" ) {
            // 取出栈顶元素作为第一个操作数
            double a = s.top();
            // 弹出栈顶元素
            s.pop();
            // 取出新的栈顶元素作为第二个操作数
            double b = s.top();
            // 弹出栈顶元素
            s.pop();
            // 将两个操作数相乘，并将结果压入栈中
            s.push(a * b);
        // 如果当前元素是除号
        } else if ( w == "/" ) {
            // 取出栈顶元素作为第一个操作数
            double a = s.top();
            // 弹出栈顶元素
            s.pop();
            // 取出新的栈顶元素作为第二个操作数
            double b = s.top();
            // 弹出栈顶元素
            s.pop();
            // 将两个操作数相除，并将结果压入栈中
            s.push(a / b);
        }
    }
    // 设置输出格式，保留两位小数
    cout << fixed << setprecision(2) << s.top() << endl;
    return 0;
}
